package java_thinking.unit_19._19_10;

import java.text.DateFormat;
import java.util.Date;

/**
 * @Desc:   1.enum允许实例编写方法，从而为每个enum实例赋予各自不同的行为，要实现相关常量相关的方法，
 *          你需要为enum定义一个或多个abstract方法，然后为每个enum实现该抽象方法；
 *          2.通过相应的enum实例，我们可以调用其上的方法，通常称为“表驱动的代码”
 *          3.其结构有点像ConstantSpecificMethod是超类，而getInfo() 体现出多态的行为
 * @author: cww
 * @DateTime: 2019/5/23 20:18
 */
public enum ConstantSpecificMethod {
    DATE_TIME {
        String getInfo() {
            return DateFormat.getDateInstance().format(new Date());
        }
    },
    CLASSPATH {
        String getInfo() {
            return System.getenv("CLASSPATH");
        }
    },
    VERSION {
        String getInfo() {
            return System.getProperty("java.version");
        }
    };
    abstract String getInfo();

    public static void main(String[] args) {
        for (ConstantSpecificMethod csm : values()) {
            System.out.println(csm.getInfo());
        }
    }
}
